package com.tai.algorithm;

import java.util.Scanner;
import java.util.TreeMap;

/**
 * The type Test 1.
 *
 * @Desc : 数据表记录包含表索引和数值（int范围的整数），请对表索引相同的记录进行合并， 即将相同索引的数值进行求和运算，输出按照key值升序进行输出 先输入键值对的个数 然后输入成对的index和value值，以空格隔开 输出合并后的键值对（多行） 示例1 输入： 4 0 1 0 2 1 2 3 4 输出： 0 3 1 2 3 4
 * @Author ： taylor
 * @Date ：2021/7/11 22:18
 */
public class Test1 {
    /**
     * The entry point of application.
     *
     * @param args the input arguments
     */
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        TreeMap<Integer, Integer> treeMap = new TreeMap<>();

        while (num >0 ){
            int key = scanner.nextInt();
            int value = scanner.nextInt();
            if (!treeMap.containsKey(key)){
                treeMap.put(key,value);
            }else {
                /**
                 * addExact(int x, int y)
                 * 返回其参数的总和，如果结果溢出int则抛出异常。
                 * 参数：
                 * x – 第一个值
                 * y – 第二个值
                 * 抛出：
                 * ArithmeticException – 如果结果溢出一个 int
                 */
                treeMap.put(key,Math.addExact(treeMap.get(key),value));
            }
            num--;
        }
        for (Integer key : treeMap.keySet()) {
            System.out.println(key +" "+treeMap.get(key));
        }
    }
}
